<?php

namespace Pinenut\User\Auth;

use Pinenut\Model2;
use Pinenut\Model2\Embedded\ReferenceContainer\One;
use Pinenut\Model2\Embedded\Reference;
use Pinenut\User\Profile;

abstract class Model extends Model2 {
	public $collection = 'Auth';
	/**
	 * Тип аутентификации, чтоб могли понять что как и куда
	 * @var string
	 */
	public $type;

	static protected $_type;


	/**
	 * Авторизуемый профайл
	 *
	 * @var Pinenut\Model2\Embedded\ReferenceContainer\One
	 */
	public $profile;
	function fields() {
		return array_merge ( parent::fields (), array (
				'type' => self::STRING,
				'profile' => array (
						One::className (),
						Reference::className (),
						Profile::className (),
						'auths'
				)
		) );
	}


	function __construct($id = null) {
		parent::__construct($id);
		// устанавливаем тип принудительно
		$this->set('type', static::$_type);
	}

	public static function find($id = null, $active = true) {
		$finder = parent::find($id, $active);
		if ($finder instanceof \Pinenut\Model2\Finder) {
			$finder->where('type', static::$_type);
		}
		return $finder;
	}

	abstract function isExist();
}